//存值和取值
const STORAGE_KEY = "mall";
export default {
    //取值
    setItem(key, value, mudele_name) {
        //如果拿到这个模块名称，
        if (mudele_name) {
            let val = this.getItem(mudele_name);
            val[key] = value;
            //括号中前一个是模块名称，一个是带入的新加入的名值
            this.setItem(mudele_name, val)
        } else {
            //我们先去获取这个值
            let val = this.getStorage();
            //然后往里面添加值
            val[key] = value;
            //写入需要使用window因为我们是面向模型对象编程.因为我们获取的是json对象，要转换成字符串才能写入。
            window.sessionStorage.setItem(STORAGE_KEY, JSON.stringify(val));
        }
    },
    //存值,获取某一个模块下的属性。
    getItem(key, mudele_name) {
        //首先浏览器有存值，我们先获取这个对象，拿到对象后，拿出属性值。就是拿到user 下user对象中的属性名属性值。
        if (mudele_name) {
            let val = this.getItem(mudele_name);
            if (val) return val[key]
        }
        return this.getStorage()[key];
    },
    //获取浏览器的缓存信息
    getStorage() {
        //进行json的数据转换，然后返出去。
        return JSON.parse(window.sessionStorage.getItem(STORAGE_KEY) || '{}');
    },
    //清空所有
    clear(key, mudele_name) {
        //先去找到这个模块，找到后拿到模块下的模块名，在拿到里面的值删除掉
        let val = this.getStorage();
        if (mudele_name) {
            //如果不存在模块就返回。
            if (!val[mudele_name]) return;
            delete val[mudele_name][key];
        } else {
            //没有找打的话，直接删除找到的模块名称
            delete val[key];
        }
        //删除后，还要重新赋值后期的新值。
        window.sessionStorage.setItem(STORAGE_KEY, JSON.stringify(val));
    }
}